package com.ibeeking.found.cop.service.common.bo;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.util.List;

/**
 * @ClassName  DataTalkMsgBO
 * @Description 会话存档消息类型
 * @Author ibeeking
 * @Date 2021-01-15 10:44
 **/
@Data
public class DataTalkMsgBO implements Serializable {
    private static final long serialVersionUID = -1L;

    /**
     * 文本
     */
    private Text text;

    /**
     * 图片
     */
    private Image image;

    /**
     * 撤回消息
     */
    private Revoke revoke;

    /**
     * 同意会话聊天内容
     */
    private Agree agree;
    private Agree disagree;

    /**
     * 语音
     */
    private Voice voice;

    /**
     * 视频
     */
    private Video video;

    /**
     * 名片
     */
    private Card card;

    /**
     * 位置
     */
    private Location location;

    /**
     * 表情
     */
    private Emotion emotion;

    /**
     * 文件
     */
    private File file;

    /**
     * 链接
     */
    private Link link;

    /**
     * 小程序消息
     */
    private Weapp weapp;

    /**
     * 会话记录消息
     */
    private ChatRecord chatRecord;

    /**
     * 填表消息
     */
    private Collect collect;

    /**
     * 红包消息
     * 互通红包消息
     */
    private Redpacket redPacket;

    /**
     * 会议邀请消息
     */
    private Meeting meeting;

    /**
     * 在线文档消息
     */
    private Doc doc;

    private Info info;

    /**
     * 日程消息
     */
    private Calendar calendar;

    /**
     * 混合消息
     */
    private Mixed mixed;

    /**
     * 音频存档消息
     */
    private MeetingVoiceCall meetingVoiceCall;

    /**
     * 音频共享文档消息
     */
    private VoipDocShare voipDocShare;

    /**
     * 视频号消息
     */
    private SphFeed sphFeed;

    @Getter
    @Setter
    public static class Text implements Serializable {
        private static final long serialVersionUID = -1L;

        private String content;
    }

    @Getter
    @Setter
    public static class Image implements Serializable {
        private static final long serialVersionUID = -1L;

        private String fileName;

        private String filePath;

        private Long fileSize;
    }

    @Getter
    @Setter
    public static class Revoke implements Serializable {
        private static final long serialVersionUID = -1L;
        private String preMsgId;
    }

    @Getter
    @Setter
    public static class Agree implements Serializable {
        private static final long serialVersionUID = -1L;

        private String userId;

        private Long agreeTime;

        private Long disagreeTime;

    }

    @Getter
    @Setter
    public static class Voice implements Serializable {
        private static final long serialVersionUID = -1L;

        private String fileName;

        private String filePath;

        private Long fileSize;

        private Long playLength;
    }

    @Getter
    @Setter
    public static class Video implements Serializable {
        private static final long serialVersionUID = -1L;

        private String fileName;

        private String filePath;

        private Long fileSize;

        private Long playLength;
    }

    @Getter
    @Setter
    public static class Card implements Serializable {
        private static final long serialVersionUID = -1L;

        private String corpName;

        private String userId;
    }

    @Getter
    @Setter
    public static class Location implements Serializable {
        private static final long serialVersionUID = -1L;

        private Double longitude;

        private Double latitude;

        private String address;

        private String title;

        private Integer zoom;
    }

    @Getter
    @Setter
    public static class Emotion implements Serializable {
        private static final long serialVersionUID = -1L;

        private Integer type;

        private Integer width;

        private Integer height;

        private String title;

        private Integer imageSize;

        private String fileName;

        private String filePath;

    }

    @Getter
    @Setter
    public static class File implements Serializable {
        private static final long serialVersionUID = -1L;
        private String fileName;

        private String fileRealName;

        private String filePath;

        private String fileExt;

        private Integer fileSize;
    }

    @Getter
    @Setter
    public static class Link implements Serializable {
        private static final long serialVersionUID = -1L;

        private String title;

        private String description;

        private String linkUrl;

        private String imageUrl;
    }

    @Getter
    @Setter
    public static class Weapp implements Serializable {
        private static final long serialVersionUID = -1L;

        private String title;

        private String description;

        private String userName;

        private String displayName;
    }

    @Getter
    @Setter
    public static class ChatRecord implements Serializable {
        private static final long serialVersionUID = -1L;

        private String title;

        private List<DataTalkMsgBO.ChatRecord.ChatRecordItem> item;

        @Getter
        @Setter
        public static class ChatRecordItem implements Serializable {
            private static final long serialVersionUID = -1L;

            private String type;

            private Long msgTime;

            private String content;

            private Boolean fromChatRoom;
        }
    }

    @Getter
    @Setter
    public static class Collect implements Serializable {
        private static final long serialVersionUID = -1L;

        private String roomName;

        private String creator;

        private String createTime;

        private String title;

        private List<DataTalkMsgBO.Collect.Details> details;

        @Getter
        @Setter
        public static class Details implements Serializable {
            private static final long serialVersionUID = -1L;

            private Long id;

            private String ques;

            private String type;
        }
    }

    @Getter
    @Setter
    public static class Redpacket implements Serializable {
        private static final long serialVersionUID = -1L;

        private Integer type;

        private Integer totalCnt;

        private Integer totalAmount;

        private String wish;
    }

    @Getter
    @Setter
    public static class Meeting implements Serializable {
        private static final long serialVersionUID = -1L;

        private String topic;

        private Long startTime;

        private Long endTime;

        private String address;

        private String remarks;

        private Integer meetingType;

        private Long meetingId;

        private Integer status;
    }

    @Getter
    @Setter
    public static class Doc implements Serializable {
        private static final long serialVersionUID = -1L;

        private String title;

        private String docCreator;

        private String linkUrl;
    }

    @Getter
    @Setter
    public static class Info implements Serializable {
        private static final long serialVersionUID = -1L;

        private String content;

        private List<DataTalkMsgBO.Info.NewsItem> newsItem;

        @Getter
        @Setter
        public static class NewsItem implements Serializable {
            private static final long serialVersionUID = -1L;

            private String title;

            private String description;

            private String url;

            private String picUrl;
        }
    }

    @Getter
    @Setter
    public static class Calendar implements Serializable {
        private static final long serialVersionUID = -1L;

        private String title;

        private String creatorName;

        private String[] attendeeName;

        private Long startTime;

        private Long endTime;

        private String place;

        private String remarks;

    }

    @Getter
    @Setter
    public static class Mixed implements Serializable {
        private static final long serialVersionUID = -1L;

        private List<DataTalkMsgBO.Mixed.Item> item;

        @Getter
        @Setter
        public static class Item implements Serializable {
            private static final long serialVersionUID = -1L;

            private String type;

            private String content;

        }
    }

    @Getter
    @Setter
    public static class VoipDocShare implements Serializable {
        private static final long serialVersionUID = -1L;

        private String fileName;

        private String filePath;

        private Long fileSize;
    }

    @Getter
    @Setter
    public static class MeetingVoiceCall implements Serializable {
        private static final long serialVersionUID = -1L;

        private Long endTime;

        private String sdkFileId;

        private List<DataTalkMsgBO.MeetingVoiceCall.DemoFileData> demoFileData;

        private List<DataTalkMsgBO.MeetingVoiceCall.ShareScreenData> shareScreenData;

        @Getter
        @Setter
        public static class DemoFileData implements Serializable {
            private static final long serialVersionUID = -1L;

            private String fileName;

            private String demoOperator;

            private Long startTime;

            private Long endTime;
        }

        @Getter
        @Setter
        public static class ShareScreenData implements Serializable {
            private static final long serialVersionUID = -1L;

            private String share;

            private Long startTime;

            private Long endTime;
        }
    }

    @Getter
    @Setter
    public static class SphFeed implements Serializable {
        private static final long serialVersionUID = -1L;

        private Integer feedType;

        private String sphName;

        private String feedDesc;
    }


    }
